#include <iostream>

class Integer
{
public:
    //explicit ：防止隐式转换，由explicit定义的构造函数不会发生隐式转换
    explicit Integer(int a) : a(a)
    {
        std::cout << "构造函数" << std::endl;
    }
    void show()
    {
        std::cout << a << std::endl;
    }
    ~Integer()
    {
        std::cout << "析构函数" << std::endl;
    }

private:
    int a;
};

int main()
{
    Integer i(10);
    //i = 20;   // 将20隐式转换为Integer (20)    再经过运算符重载 i = Integer i(20)
    //  构造函数的隐式转换 ：会把符合构造函数的变量变换成匿名对象；
    i.show();

    return 0;
}